Video content is often digitally encoded in a compressed format to minimize an amount of storage necessary to store the video content, and to minimize the amount of bandwidth necessary for transmitting the video content to content viewers. Popular video compression standards are the established MPEG-2 format and the newer JVT/H.264/MPEG AVC (hereinafter “H.264”) format.
In contrast to MPEG-2 which compresses video by encoding entire pictures, H.264 compresses video by compressing macroblocks of image pixels, or slices. In particular, H.264 uses tree-structured hierarchical macroblock partitions. For instance, 16×16 pixel macroblocks may be broken into macroblock partitions of sizes 16×8, 8×16 or 8×8. Macroblock partitions of 8×8 pixels are also known as sub-macroblocks. Sub-macroblacks may be further broken into sub-macroblock partitions of sizes 8×4, 4×8 or 4×4. An H.264 encoder may select how to divide the macroblock into partitions and sub-macroblock partitions in order to maximize compression efficiency and subjective quality. The division algorithm that is used is based on the characteristics of a particular macroblock.
Another distinguishing feature of H.264 is that it provides for supplemental enhancement information (SEI) and video usability information (VUI), which are extra information that can be inserted into the video bitstream to enhance the use of the video for a wide variety of purposes. Examples of SEI include a sub-sequence information SEI message, a sub-sequence layer characteristics SEI message, and a sub-sequence characteristics SEI message.
The sub-sequence information SEI message is used to indicate the position of a picture in a data dependency hierarchy that consists of sub-sequence layers and sub-sequences. A sub-sequence layer contains a subset of the coded pictures in a sub-sequence and is numbered with a non-negative integer. A layer having a larger layer number is a higher layer in the hierarchy than a layer having a smaller layer number. A sub-sequence is a set of coded pictures within a sub-sequence layer. A picture resides in only one sub-sequence, and a sub-sequence can be decoded independently of any picture that does not belong to the sub-sequence.
Although the standard H.264 layering hierarchy enables greater video compression in comparison to other video compression standards, such as MPEG-2, the prediction scheme is complex. For example, a predicted image (P-image) may actually be predicted from a bidirectional image (B-image). Thus, all images may need to be decoded, even when fast forward or fast reverse trick mode is being performed on the H.264 encoded video bitstream. Video processors powerful enough to provide high speed decoding adequate for such decoding are expensive. Thus, a solution is needed which enables fast forward and fast reverse playback to be performed using a low cost video processor.